import axios from 'axios';

/**
 * 请求拦截
 * 它的任务就是：
 * 每次发送请求时，都检查 sessionStorage 中，是否存在 token 字段
 * 如果存在，就把它添加到请求 header 中，以便后端服务器做身份认证
 */
axios.interceptors.request.use((config) => {
    const token = window.sessionStorage.getItem('token');
    if (token) config.headers.token = token;
    return config;
});

/**
 * 响应拦截
 * 它的任务就是：
 * 在后端中间件中，进行身份认证（也就是 token 校验是）时，发生了错误，返回了 401 状态码
 * 我们在这里需要，拦截这个响应，判断状态码是不是 401
 * 如果是 401，就跳转到登录页面去登录
 */
axios.interceptors.response.use((response) => {
    const res = response.data;
    if (res.code === 401) {
        window.location.href = '/login';
    }
    return res;
});

export default axios;
